/*
 * Este programa convierte cualquier numero romano
 * a decimal siguiendo todas las reglas existentes.
 * 
 * Autor: Jorge Luis Perez Canto.
 */
import java.io.*;

public class NumerosRomanos
{
    public static void main(String args[]) throws Exception
    {
        int i, I, V, X, L, C, D, M;
        I=1; V=5; X=10; L=50; C=100; D=500; M=1000;
        
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        
        System.out.print("Ingrese un numero Romana: ");
        String letraRomana=br.readLine();
        System.out.flush();
        
        letraRomana=letraRomana.toUpperCase();
        String letra="";
        String resultado1="";
        String anterior="";
        String ultimo;
        
        int suma=0;
        int nAnterior=0;
        int nUltimo=0;
        int contador=1;
        OUTER:
        for (i=0; i<=letraRomana.length(); i++) {
            if (i>0) {
                letra=letraRomana.substring(i-1,i);
                resultado1=resultado1+letra;
                ultimo=letra;
                switch (letra) {
                    case "I":
                        suma=suma+I;
                        nUltimo=I;
                        if (anterior.equals("I"))
                            contador=contador+1;
                        else
                            contador=1;
                        if (contador>3) {
                            suma=0;
                            break OUTER;
                        }
                        break;
                    case "V":
                        suma=suma+V;
                        nUltimo=V;
                        if (anterior.equals("V"))
                            contador=contador+1;
                        else
                            contador=1;
                        if (contador>3) {
                            suma=0;
                            break OUTER;
                        }
                        break;
                    case "X":
                        suma=suma+X;
                        nUltimo=X;
                        if (anterior.equals("X"))
                            contador=contador+1;
                        else
                            contador=1;
                        if (contador>3) {
                            suma=0;
                            break OUTER;
                        }
                        break;
                    case "L":
                        suma=suma+L;
                        nUltimo=L;
                        if (anterior.equals("L"))
                            contador=contador+1;
                        else
                            contador=1;
                        if (contador>3) {
                            suma=0;
                            break OUTER;
                        }
                        break;
                    case "C":
                        suma=suma+C;
                        nUltimo=C;
                        if (anterior.equals("C"))
                            contador=contador+1;
                        else
                            contador=1;
                        if (contador>3) {
                            suma=0;
                            break OUTER;
                        }
                        break;
                    case "D":
                        suma=suma+D;
                        nUltimo=D;
                        if (anterior.equals("D"))
                            contador=contador+1;
                        else
                            contador=1;                        
                        if (contador>3) {
                            suma=0;
                            break OUTER;
                        }
                        break;
                    case "M":
                        suma=suma+M;
                        nUltimo=M;
                        if (anterior.equals("M"))
                            contador=contador+1;
                        else
                            contador=1;                        
                        if (contador>3) {
                            suma=0;
                            break OUTER;
                        }
                        break;
                    default:
                        System.out.println("Valor no valido.");
                        nUltimo=suma;
                        break;
                }
                //nUltimo=suma;
                if (anterior.equals(letra)) {
                    if ((anterior.equals("V"))||(anterior.equals("L"))||(anterior.equals("D"))) {
                        System.out.println("Error: El numero romano '"+letra+"' no puede repetirse mas de una vez.");
                        suma=0;
                        break;
                    }
                }
                nAnterior=suma-nUltimo;
                //System.out.println("Aterior: "+anterior+"="+nAnterior+"  Ultimo: "+ultimo+"="+nUltimo+ "  Suma: "+suma+"   Contador: "+contador);
                if ((nAnterior<nUltimo) && (nAnterior>0)) 
                {
                    if ((anterior.equals("I")) && ((ultimo.equals("V"))||(ultimo.equals("X")))) {
                        suma=suma-(nAnterior*(2));
                    }
                    else if ((anterior.equals("X")) && ((ultimo.equals("L"))||(ultimo.equals("C"))))
                        suma=suma-(nAnterior*(2));
                    else if ((anterior.equals("C")) && ((ultimo.equals("D"))||(ultimo.equals("M"))))
                        suma=suma-(nAnterior*(2));
                    else if (anterior.equals("V")) {
                        suma=0;
                        System.out.println("Error: El numero romano '"+anterior+"' no pueden estar a la izquierda de uno de mayor valor.");
                        break;
                    }                    
                }             
                 
            anterior=letra;
            //nAnterior=suma-nUltimo;

            }
        }
        if (contador<=3)
            System.out.println("La cantidad " +resultado1+ " equivale a: " +suma);
        else
            System.out.println("Error: Ningun valor se puede repetir mas de tres veces.");
    }
}